Automated Presentation of directory src/swtools/DSOs/

HUB | Up | Download | Pheedbak | Tree | Topic | A-Z | Search | Hot | New


This subtree contains information and source code
on the new world of Dynamic Shared Objects.

also see the PostScript files in toolbox/documents/optimization of 
the intro and first three chapters of the Irix Programming 
Guide, as well as the Frequently Asked Questions DSO file 
located at toolbox/FAQs/SGIfaqs/DSO-faq.
  compiler-DSOtricks:  quick-reference/cheat sheet discussing:
             1) DSO's
             2) QuickStart & Conflicts
             3) Lint
             4) Improving Program Performance (IRIX System Programming 
                Guide Ch3)
             5) prof (IRIX System Programming Guide Ch3)
             6) pixie (IRIX System Programming Guide Ch3)

  dso5.man.txt:  IRIX 5.2 ascii version of the dso(5) man page contains,
             among a wealth of other stuff, the list of 30 FREQUENTLY 
             ASKED QUESTIONS.

  DSOexamp:  demonstrates the use of dynamic shared objects with 
             dlopen(3X), dlsym(3X) and dlclose(3X).

  DSOsecurity: DSO Function Authentication.
             An example of how to protect DSO function calls from
             being intercepted or replaced.  An application or
             licensing code developer can use DSOauth in their
             application such that they can protect their DSO
             function calls from being intercepted or replaced
             (eg. preventing substitution of the gettimeofday call
             in a license verification routine) without giving up
             any of the features of DSOs.

  forum93:   showcase slides of Jay Gischer's DSO talk at the 1993
             Developer's Forum + eight case studies in dynamic shared
             objects.
             UPDATED VERSION NOW INCLUDES INFORMATION ON 64-BIT ISSUES

  11chap3.ps.Z:  Chapter 3, "Dynamic Shared Objects", describes 
             essential DSO topics including their definition, Using DSOs,
             Taking Advantage of QuickStart, Building DSOs, Runtime 
             Linking, Dynamic Loading Under Program Control, and 
             Versioning of DSOs.  
	     From the MIPSpro Compiling and Performance Tuning Guide

  ld.showcase:  showcase slides presented in-house a few months back 
             covering Build-time alternatives relating to ld, including 
             using the "-update_registry" and "-no_unresolved" flags, 
             Transitive Links, and Delayed Load.

  rld.overview:  ascii version of showcase slides presented in-house a
             few months back providing an overview of Quickstart,
             Requickstart and tasks performed by RLD, the dynamic linker.

  slides.jay.sc:   Designing DSO's for Maximum Performance


            DSO's ARE NOT LIBRARIES, THEY ARE LIKE SUPER .o's
 
   Linking against a shared object forces the runtime loading of that 
   object.  Runtime loading of shared objects is transitive.  You get 
   the entire DSO, not just the part of the DSO that you reference.  
   Undefines in a shared object will be resolved by .o's and .a's 
   specified later in the link line.


             Quickstart:  Reducing the Cost of Startup

   ld resolves symbols when creating a shared object/application and if 
   possible rld uses those addresses without any symbol table lookup.

   Main Reason for Quickstart Failure:
       Mismatch between DSO's used when creating a shared 
       object/application and the DSO's available 
       when executing the DSO or shared object. 


   Understanding Quickstart Failures:
       ld will soon warn when a shared object/application is not marked 
       quickstart.  "elfdump -info" will give same information.  Use 
       debugging version of rld to determine if quickstart is working 
       for a particular application:
         setenv _RLD_PATH /lib/rld.debug
         setenv _RLD_ARGS -quickstart_info


                    Making Self-Contained DSO's

   completeness vs. performance:
       * Want to eliminate unresolved symbols
       * Use -no_unresolved flag
       * Add additional .o's and .a's to eliminate those symbols
       * Run into performance problems with adding certain .so's
         libgl.so because it is machine specific
         libtt.so in libvk.so since it is rarely used
       * Use -delay_load (available soon) in ld
       * Import functions not data
       * Make sure machine-specific libraries are last on the link line
       * Split .so's to limit exposure

                       Symbol Conflicts
 
   The same symbol being defined in multiple objects, requires lookup 
   in the symbol table of each loaded object.

       ld will soon warn about the existence  of conflicts
       "elfdump -Dc" will give list of conflicts
       "elfdump -Dt" will give list of defined symbols

       Be careful linking against a library (.a) as it can 
       lead to conflicts.

Files of interest from "src/swtools/DSOs" directory

Documentation

Reference

Subdirectories


Select any combo of files you'd like to send yourself a compressed tar image of. Executables/scripts are indicated with a trailing `*' character. (Depending upon the browser, it may be necessary to hold down the Ctrl key to select/deselect disjoint items.) a compressed tar image of the above-selected items.
OR, ...
a compressed tar image of the entire DSOs directory.

Copyright © 1995, Silicon Graphics, Inc.